package com.yeren.tarena.practice.ff;

import java.util.Scanner;
/*
 * 在课上案例的基础上，首先，在GuessingGame类的main方法中，
 * 使用do-while循环，判断玩家输入的等级。循环进行的条件为：
 * 玩家输入的等级不是5，7，9当中的一个，即，当用户输入非5，7，9
 * 当中一个时，循环继续；然后，更改generate方法的声明，传入等级参数.
 */
public class Basic_p158 {
	public static void main(String[] args) {
		// 提示用户输入
		System.out.println("欢迎尝试猜字母游戏！");
		System.out.println("请输入游戏级别（5,7,11）");
		// 收集用户输入的数据
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		while (num != 5 && num != 7 && num != 11) {
			System.out.println("请输入游戏级别（5,7,11）");
			num = scanner.nextInt();
		}
		switch (num) {
		case 5:
			guss1(num);
			break;
		case 7:
			guss1(num);
			break;
		case 11:
			guss1(num);
			break;
		default:
			System.out.println("hh...");
		}

	}

	public static void guss1(int num) {

		char[] gussAll = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
				'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
				'w', 'x', 'y', 'z' };
		boolean[] flag = new boolean[gussAll.length];
		char[] gussArr = new char[num];
		// 给要猜的数组赋值
		for (int i = 0; i < gussArr.length; i++) {
			int index;
			do {
				index = (int) (Math.random() * 26);
			} while (flag[index]);
			gussArr[i] = gussAll[index];
			flag[index]=true;
//			System.out.print(gussArr[i]);
		}
		String type = "";
		while (true) {
			/*
			 *  采集输入数据
			 */
			System.out.println("游戏开始，请输入你所猜的" + num + "个字母序列：（exit--退出）");
			Scanner scanner = new Scanner(System.in);
			type = scanner.nextLine();
			/*
			 *  检验是否出现EXIT
			 */
			if (type.equals("exit")) {
				System.out.println("欢迎下次回来");
				break;
			}
			/*
			 * 将输入的字符串变为字符数组
			 */
			char[] typeArr = new char[type.length()];
			for (int i = 0; i < type.length(); i++) {
				typeArr[i] = type.charAt(i);
				System.out.print(typeArr[i] + " ");
			}
			/*
			 * 判断对了几个字符
			 */
			int count = 0;
			int position = 0;
			for (int i = 0; i < gussArr.length; i++) {
				for (int j = 0; j < typeArr.length; j++) {
					if (gussArr[i] == typeArr[j]) {
						count++;
						if (i == j) {
							position++;
						}
					}
				}
			}
			/*
			 * 输出结果
			 */
			if (count == num && position == num) {
				System.out.println("恭喜你猜对了");
				break;

			} else {
				System.out.println("你猜对了" + count + "个字符," + "其中位置对了"
						+ position + "个");
			}
		}

	}
}
